package com.taijihuabao.modules.entity;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.taijihuabao.common.commonutils.LongToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.List;

/**
 * 部门管理
 * @author xiao
 * @ToString 解决继承的字段在对象中消失的情况
 */
@Data
@EqualsAndHashCode(callSuper=false)
@ToString(callSuper = true)
@ApiModel("部门管理实体类")
public class DeptEntity extends BaseEntity {

    /**
     * 部门编号
     */
    @ApiModelProperty(value = "部门编号")
    @JsonSerialize(using = LongToStringSerializer.class)
    private Long id;

    /**
     * 部门名称
     */
    @ApiModelProperty(value = "部门名称")
    private String deptName;

    /**
     * 部门编码
     */
    @ApiModelProperty(value = "部门编码")
    private String deptCode;

    /**
     * 父级部门id
     */
    @ApiModelProperty(value = "父级部门编码")
    private String parentDept;

    /**
     * 子级部门id
     */
    @ApiModelProperty(value = "子级部门编码")
    private String subDept;

    /**
     * 父级部门名称
     */
    @ApiModelProperty("父级部门名称")
    private String parentName;

    /**
     * 子级部门名称
     */
    @ApiModelProperty("子级部门名称")
    private String subName;

    /**
     * 用户编号集合
     */
    @ApiModelProperty(value = "用户编号集合")
    private List<Long> userList;

    /**
     * 登录id
     */
    @ApiModelProperty(value = "登录id")
    @JsonSerialize(using = LongToStringSerializer.class)
    private Long loginId;

    /**
     * 父级部门对象
     */
    @ApiModelProperty(value = "父级部门对象")
    private List<DeptEntity> parentDeptEntities;

    /**
     * 子级部门对象
     */
    @ApiModelProperty(value = "子级部门对象")
    private List<DeptEntity> children;

}
